package edu.ptu.communityplatform.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import edu.ptu.communityplatform.domain.entity.Person;
import edu.ptu.communityplatform.domain.vos.PersonInfoVo;
import edu.ptu.communityplatform.domain.vos.PersonPageVo;
import io.lettuce.core.dynamic.annotation.Param;

/**
 * @BelongsProject: communityPlatform
 * @BelongsPackage: edu.ptu.communityplatform.mapper
 * @Author: HYJ
 * @CreateTime: 2025-04-05  03:00
 * @Description: TODO
 * @Version: 1.0
 */
public interface PersonMapper extends BaseMapper<Person> {
    /**
     * 根据用户ID获取用户姓名
     *
     * @param personId 用户ID
     * @return 用户姓名
     */
    String getPersonNameById(Long personId);

    /**
     * 根据用户ID获取用户手机号
     *
     * @param personId 用户ID
     * @return 用户手机号
     */
    String getPhoneNumberById(Long personId);

    /**
     * 根据用户id获取 plotId
     *
     * @param personId 用户id
     * @return plotId
     */
    Long getPlotIdByPersonId(Long personId);

    /**
     * 根据小区id查询小区下的用户信息
     *
     * @param page       分页信息
     * @param plotId     小区id
     * @param personName 姓名
     * @return 小区下的用户信息
     */
    IPage<PersonInfoVo> getPage(
            Page<Person> page,
            @Param("plotId") Long plotId,
            @Param("personName") String personName
    );
}
